package org.example.pinda.base.id;

/**
 * ID生成接口，用于生成唯一ID
 * <p> 注意：在写ID生成器时，主要考虑ID会不会重复 </p>
 * <p> 尤其需要考虑在并发的情况下，也要保证不会出现重复的ID </p>
 * <p> 实现类必须是线程安全的，因为会应用到多线程环境中 </p>
 *
 * @param <T> 生成ID的类型
 * @author ryan fawcett
 */
@FunctionalInterface
public interface IdGenerator<T> {

    /**
     * 生成唯一ID
     *
     * @return 唯一ID
     */
    T generate();

}
